#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>


#define FILENAME "/tmp/out"

static int daemonize(void)
{
    pid_t pid;
    int fd ;
    pid = fork();
    if(pid < 0)
    {
        perror("fork()");
        return -1;
    }
    if(pid > 0)
        exit(0);

    fd = open("/dev/null",O_RDWR);
    if(fd < 0)
    {
        perror("open()");
        return -1;
    }
    dup2(fd , 0);
    dup2(fd , 1);
    dup2(fd , 2);
    if(fd > 2)
        close(fd);
    
    setsid();

    chdir("/");
    umask(0);
    return 0;
}




int main ()
{
    
    int i ;
    FILE *fd;
    if(daemonize())
        exit(1);

    fd = fopen(FILENAME , "w");
    if(fd == NULL)
    {
        perror("fopen()");
        exit(1);
    }

    for(i = 0 ; ; i++)
    {
        fprintf(fd , "%d\n" , i);
        fflush(NULL);
        sleep(1);
    }


    return 0;
}